iT邦幫忙

2024 iThome 鐵人賽

DAY 4
0
佛心分享-SideProject30

RAG 和 MongoDB Vector Search系列 第 4

MongoDB Atlas: Pymongo CRUD

  • 分享至 

  • xImage
  •  

昨天我們介紹了如何設定MongoDB Compass,現在我們就可以比較簡單的去檢視今天進行的操作結果。這邊先補充昨天連線的內容,如果有遇到以下問題可先嘗試一些解決辦法:

連線問題:點擊連線時依然遇到連線失敗的問題,且已經將0.0.0.0/0加入network access

解決方法:右鍵點擊connection,選取edit connection。確認URI當中的password是否和網頁中的database access所設定的user密碼一致,如果看不到密碼就新增password。

https://ithelp.ithome.com.tw/upload/images/20240918/20167359uM8FzEHsXM.png

註解:這邊記得可以勾選下方藍勾(Favorite this connection),這樣日後進行連線查看時可以方便一些。

回到今天的主題:pymongo CRUD。先解釋兩個名詞:pymongo & CRUD,pymongo 是python 的一個專門套件用於編輯資料庫中資料。而CRUD是四個單詞的組合:Create/ Read/ Update/ Delete,這些都是面對資料存取時常會用到的功能。接下來將會介紹如何使用pymongo去進行資料編輯。

建立連線

from pymongo import MongoClient

connecting_string = "your_connection_string"
client = MongoClient(connecting_string)

db = client['practice_CRUD']
collection = db['name_ages']

connecting string可以從Compass右鍵點擊剛剛的連線名稱,選取Copy connecting string。

Create操作

# 插入一個文件
document = {"name": "Alice", "age": 25, "city": "New York"}
result = collection.insert_one(document)
print(f"Inserted document ID: {result.inserted_id}")

# 插入多個文件
documents = [
    {"name": "Bob", "age": 30, "city": "Chicago"},
    {"name": "Charlie", "age": 35, "city": "San Francisco"}
]
result = collection.insert_many(documents)
print(f"Inserted document IDs: {result.inserted_ids}")

https://ithelp.ithome.com.tw/upload/images/20240918/20167359TghBphyA6x.png

當操作完成Create之後,點擊Refresh就可以看到我們創建的practice_CRUD database。

https://ithelp.ithome.com.tw/upload/images/20240918/20167359HtiVIB9zy0.png

Read

# 查詢一個文件
document = collection.find_one({"name": "Alice"})
print(document)

# 查詢多個文件
# $gte是找尋檔案的運算符,也就是查詢條件。下方連結有詳細的運算符介紹
documents = collection.find({"age": {"$gte": 30}})
for doc in documents:
    print(doc)

https://ithelp.ithome.com.tw/articles/10244169

這裡使用的是find方法來去進行資料的讀取,而且資料讀取的方式也會比較沒有效率。因為這樣的查找方式就是「遍歷」所有資料,然後挑出符合設定條件的documents。後續會介紹可以優化的方法。

Update

# 更新一個文件
result = collection.update_one({"name": "Alice"}, {"$set": {"age": 26}})
print(f"Modified count: {result.modified_count}")

# 更新多個文件
result = collection.update_many({"city": "New York"}, {"$set": {"city": "Brooklyn"}})
print(f"Modified count: {result.modified_count}")

這邊稍微解釋一下$set,update function的第一個變數是告知要針對document當中要修改的位置,第二個變數是告知要編輯的方式。而$set就是當city欄位是New York的資料改寫成Brooklyn,當然這裡不一定要改寫city欄位,可以改寫age或者name等等欄位。

Delete

# 刪除一個文件
result = collection.delete_one({"name": "Alice"})
print(f"Deleted count: {result.deleted_count}")

# 刪除多個文件
result = collection.delete_many({"city": "Brooklyn"})
print(f"Deleted count: {result.deleted_count}")

delete方法很好理解,就是給定條件,只要符合條件的document都會被刪除。

以上就是基本的資料讀寫,當每一個操作做完之後都可以到Compass當中去確認操作的結果。如果發現database當中沒有更動,確認一下pymongo執行結果沒有出錯,或者記得確認按下Refresh重整資料庫。希望今天的分享有幫助到實際操作上遇到問題的同學~

(以上程式碼有使用GPT協助製作)


上一篇
MongoDB Atlas Compass
下一篇
MongoDB Atlas Search Index
系列文
RAG 和 MongoDB Vector Search11
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言